package com.merry.aop.advice;

import org.aopalliance.aop.Advice;
import org.aopalliance.intercept.Joinpoint;

/**
 * 此接口表示通用拦截器。
 * 通用拦截器可以拦截基础程序中发生的运行时事件。这些事件通过连接点{@link Joinpoint}具体化。运行时连接点可以是 invocations、field access、exceptions 等等
 * 此接口不直接使用。使用子接口拦截特定事件。
 * 例如，以下类实现了一些特定的拦截器，以实现调试器：
 *
 * <pre class=code>
 * class DebuggingInterceptor implements MethodInterceptor,
 *     ConstructorInterceptor {
 *
 *   Object invoke(MethodInvocation i) throws Throwable {
 *     debug(i.getMethod(), i.getThis(), i.getArgs());
 *     return i.proceed();
 *   }
 *
 *   Object construct(ConstructorInvocation i) throws Throwable {
 *     debug(i.getConstructor(), i.getThis(), i.getArgs());
 *     return i.proceed();
 *   }
 *
 *   void debug(AccessibleObject ao, Object this, Object value) {
 *     ...
 *   }
 * }
 * </pre>
 *
 * @author Rod Johnson
 * @see Joinpoint
 */
public interface Interceptor extends Advice {

}
